stata最大值最小值命令

您所在的位置:网站首页 stata absorb命令 stata最大值最小值命令

stata最大值最小值命令

2022-05-25 13:57| 来源: 网络整理| 查看: 265

欢迎关注

经管学苑

(ID:jingguan100)

由南开大学数量经济研究所所长王群勇教授及其学术团队主办, 旨在定期与大家分享计量经济学的相关理论及软件使用技巧,覆盖经济学、管理学、社会学、政治学等学科,为广大学友提供优质学术内容

扫码关注

c2b2222a-8d12-eb11-8da9-e4434bdf6706.jpeg

▲长按二维码关注

文章来源:量化研究方法(ID:phdthink),文章整合于计量经济学和STATA论文实证分析,本文仅作学术分享,版权归原作者所有。

c3b2222a-8d12-eb11-8da9-e4434bdf6706.gif 众所周知,stata 因为 其体积小巧、简单易懂且功能强大 被成为统计软件中的 轻骑兵 。 关于Stata软件,小编经常会被人问道:“stata到底能做什么吗?”我适合学这个吗?我没有计量经济学基础,能学得会这个吗?今天小编就带你了解一下他。

Stata : 

论文中数据分析的一把利剑

Stata 与 SPSS、SAS 并称为当今三大统计软件。与后者相比,Stata 体积小巧、简单易懂且功能强大。Stata 把 EViews, SPSS 的傻瓜式菜单和 SAS 的命令、编程完美结合起来,所以它一推出就受到了初学者和高级用户的普遍欢迎。Stata 不仅在统计方面功能齐全,其在计量分析领域更是有着深刻影响,以至于有人一言以蔽之:“ 关于学习 Stata 的意义,大家只需知道:目前,Stata 是计量经济学,特别是微观计量经济学的主流软件。” Stata作为一款功能强大、用法简单且易于上手的统计软件,不仅统计分析功能全面,而且在数据管理方面的功能也很强大。Stata 擅长数据处理、面板数据分析、时间序列分析、生存分析,以及调查数据分析,但其它方面的功能也并不逊色。 c4b2222a-8d12-eb11-8da9-e4434bdf6706.jpeg

弱水三千,

我为何开始钟情于Stata?

学校存在鄙视链,职位存在鄙视链。当然咱们的统计软件也存在鄙视链。

使用Stata的社科研究者看到使用SPSS和eviews的同学,可能面上维持礼貌的微笑,内心早已不知吐槽到哪里。

但是谁还不是从SPSS开始,接触的统计软件呢?但是既然是鄙视链,并没有处在鄙视链顶端的Stata在面对可以处理更多数据的SAS也会有点虚。

当然R语言这时一定会跳出来鄙视SAS,毕竟以T为单位的数据容量,SAS表示有点累。不过在鄙视链条上,Python也在R之上,然而总会有大神会跳出来,这些都太慢了,C才好用。综上所述,鄙视链条大概就是:C>Python>R>SAS>Stata>eviews>SPSS

然而所有的统计软件都是为了更好的分析数据而存在的,鄙视链也只是一种自嘲的说法,并不是真正的鄙视。

对于学术界,为了处理数据专门学习一门编程语言(如C、Python)未免有点小题大做,使用最基础的SPSS和eviews拿来做科研又显得不够专业。曾看过一个很有意思的比喻,如果把SAS,Stata,SPSS和eviews进行比较,那SAS好比单反,Stata好比半自动相机,而SPSS和eviews好比傻瓜相机。而Stata刚刚好,不难上手又不失专业水准,内含足够多的扩展包,足以应对科研中的数据分析。

世界太小,地球刚刚好!统计软件太多,stata刚刚好!

一个博士生该掌握哪些工具(武器)?Stata,R,Matlab ,Python至少会用一个, 具体学哪个,还要看你的最终用这些武器干啥。总之,重点还是学统计方法,stata上手比鄙视链上层的还快。

Stata有什么优势?

stata计算速度快、使用方便、图形功能强大、兼容性强、统计内容充实、数据管理功能强大、可编程……

do文档编程,让科研更方便

电视剧《宋飞正传》里面有这么一集:Jerry熬夜聚会,当被问及这样做明天可能产生的后果时,他说:“让明天那个家伙处理它吧”

当然这个笑话里面,Jerry否认了一个事实,他那就是“明天那个家伙”。同样,这个道理适用于研究项目。

此类项目的目标是混合的,有短期的,也有长期的,而且这两类目标可能不一致。当短期目标是快速完成一个数据分析时,就有可能和该项目的长期目标发生冲突:做好文件记录,在6个月后对审稿人的评论需要作出反馈时能获得可重复的结果。处理审稿人评论的意见就类似“明天那个人”或“明天那个家伙”。

学术路上,关于stata,这些问题你必须要知道。do-files让你能够轻松复制你的原始结果并针对审稿人意见作出修改。(不再为科研熬夜,和你分手,真好)

在了解stata可以处理哪一类领域之后,我的建议若是你需要进行计量经济学相关领域的科研工作,可以学习stata。

SPSS软件在描述统计、假设检验(T、F、卡方、方差齐性、正态性、信效度等检验)、回归分析、相关分析、因子分析、聚类分析、判别分析、主成分、因子分析、路径分析、中介效应和调节效应检验、时间序列分析、ARIMA预测等,具有很好的应用;但是在面板数据处理方面,基本不用。

Eviews软件适用于相关、回归、多重共线性、异方差、自相关、单位根检验、协整、格兰杰、脉冲、方法分解、VAR、面板数据、门限等领域。

Stata除了可以处理上述分析方法之后,还可以处理倾向匹配得分、门限、合成、断点、双重差分、空间计量等领域。若是你想使用后面的分析方法进行研究,那么无疑stata是不二之选。另外在现在微观计量经济学领域,处理大型微观数据库等方便,stata的数据管理功能显得更加完美。

STATA常用命令分享

查找帮助文件的命令

help和 search都是查找帮助文件的命令,它们之间的区别在于 help用于查找精确的命令名,而 search是模糊查找。如果你知道某个命令的名字,并且想知道它的具体使用方法,只须在Stata的命令行窗口中输入 help空格加上这个名字。回车后结果屏幕上就会显示出这个命令的帮助文件的全部内容。如果你想知道在stata下做某个估计或某种计算,而不知道具体该如何实现,就需要用 search命令了。使用的方法和 help类似,只须把准确的命令名改成某个关键词。回车后结果窗口会给出所有和这个关键词相关的帮助文件名和链接列表。在列表中寻找最相关的内容,点击后在弹出的查看窗口中会给出相关的帮助文件。耐心寻找,反复实验,通常可以较快地找到你需要的内容。

常用的基础命令

Tips: 我的处理数据经验是最好能用Stata的do文件编辑器记下你做过的工作。因为很少有一项实证研究能够一次完成,所以,当你下次继续工作时。能够重复前面的工作是非常重要的。有时因为一些细小的不同,你会发现无法复制原先的结果了。这时如果有记录下以往工作的do文件将把你从地狱带到天堂。因为你不必一遍又一遍地试图重现做过的工作。在Stata窗口上部的工具栏中有个孤立的小按钮,把鼠标放上去会出现“bring do-file editor to front”,点击它就会出现do文件编辑器。

为了使do文件能够顺利工作,一般需要编辑do文件的“头”和“尾”。这里给出我使用的“头”和“尾”。

//清空内存中的数据

capture clear

//关闭所有打开的日志文件

capture log close

//关闭所有打开的日志文件

capture log close

//关闭more选项,如果打开该选项,那么结果分屏输出,即一次只输出一屏结果。

set more off

//进入数据所在的文件夹

cd D:\dataFile

//打开日志文件

log using 日志.log, replace

//关闭日志文件

log close

//打开dta数据文件

use data.dta, clear

//保存dta数据文件

save result.dta, replace

//导入Excel文件

import excel data.xlsx, firstrow clear

//导出Excel文件

export excel result.xlsx, firstrow(variable) replace

//退出并清空内存中的数据

exit, clear

数据检查和预处理命令 实证工作中往往接触的是原始数据。这些数据没有经过整理,有一些错漏和不统一的地方。比如,对某个变量的缺失观察值,有时会用点,有时会用-9,-99等来表示。回归时如果使用这些观察,往往得出非常错误的结果。还有,在不同的数据文件中,相同变量有时使用的变量名不同,会给合并数据造成麻烦。因此,拿到原始数据后,往往需要根据需要重新生成新的数据库,并且只使用这个新库处理数据。这部分工作不难,但是非常基础。因为如果在这里你不够小心,后面的事情往往会白做。

假设你清楚地知道所需的变量,现在要做的是检查数据、生成必要的数据并形成数据库供将来使用。检查数据的重要命令包括 codebook、 sum、 ta、 des和 list。

codebook提供的信息最全面,缺点是不能使用if条件限制范围,所以,有时还要用别的帮帮忙。sum空格加变量名报告相应变量的非缺失的观察个数,均值,标准差,最小值和最大值。ta空格后面加一个(或两个)变量名是报告某个变量(或两个变量二维)的取值(不含缺失值)的频数,比率和按大小排列的累积比率。des后面可以加任意个变量名,只要数据中有。它报告变量的存储的类型,显示的格式和标签。标签中一般记录这个变量的定义和单位。list报告变量的观察值,可以用if或in来限制范围。 除了ta命令,其他命令都可以后面不加任何变量名,报告的结果是正在使用的数据库中的所有变量的相应信息。说起来苍白无力,打开Stata亲自实验一下吧。

检查数据时,先用 codebook看一下它的值域和单位。如果有-9,-99这样的取值,查一下问卷中对缺失值的记录方法。确定它们是缺失值后,改为用点记录。

//缺失值处理

replace 变量名=. if 变量名==-9

再看一下用点记录的缺失值有多少,作为选用变量的一个依据。

得到可用的数据后,我会给没有标签的变量加上注解。或者统一标签;或者统一变量的命名规则。整齐划一的变量名有助于记忆,简明的标签有助于明确变量的单位等信息。

//更改变量名

rename 旧变量名 新变量名

//给变量定义标签

label var 变量名 "标签内容"

如果你需要使用通过原始变量派生出的新变量,那么就需要了解 gen 、 egen 和 replace 这三个命令。 gen和 replace常常在一起使用。二者的不同之处在于gen是生成新变量,replace是重新定义旧变量。

//生成新变量

gen 变量名=(表达式)

//重新定义旧变量

replace 变量名=(表达式)

生成虚拟变量的命令

虚拟变量是我们常常需要用到的一类派生变量。如果你需要生成的虚拟变量个数不多,可以有两种方法生成。

//举例说明,年份变量year值为2015-2017

//生成年份虚拟变量

//第一种方法

gen year_2015=(year==2015)

gen year_2016=(year==2016)

gen year_2017=(year==2017)

//第二种方法

gen year_2015=1if year==2015

replace year_2015=0if year!=2015

gen year_2016=1if year==2016

replace year_2016=0if year!=2016

gen year_2017=1if year==2017

replace year_2017=0if year!=2017

两个方法貌似一样,但有一个小小的区别。如果限制条件中使用的变量都没有任何缺失值,那么两种方法的结果一样。如果有缺失值,第一种方法会把是缺失值的观察的虚拟变量都定义为0。而第二种方法可以将虚拟变量的取值分为三种,一是等于1,二是等于0,三是等于缺失值。这样就避免了把本来信息不明的观察错误地纳入到回归中去。

大量的虚拟变量往往是根据某个已知变量的取值生成的。比如,在某个回归中希望控制的虚拟变量可能有成百上千个,如果用上次的所说的方法生成就需要重复成百上千次,这也太笨了。大量生成虚拟变量的命令如下;

ta 变量名, gen(变量名前缀)

第一个括号里的变量名是已知的变量,后一个括号里的变量名是新生成的虚拟变量的共同前缀,后面跟数字表示不同的虚拟变量。

ta year, gen(year_)

//这样就可以生成year_1, year_2, year_3...等虚拟变量

然后在回归中控制年份变量,只需简单地放入这些变量即可。一个麻烦是虚拟变量太多,怎么简单地加入呢?一个办法是用省略符号,  year_* 表示所有 year_ 开头的变量,另一法是用破折号, year_1-year_10 表示第1个到第10个年份虚拟变量(假设共有10年)。 还有一种方法可以在回归中直接控制虚拟变量,而无需真的去生成这些虚拟变量。使用命令areg可以做到,它的语法是

areg (被解释变量) (解释变量), absorb(变量名)

absorb选项后面的变量名和前面讲的命令中第一个变量名相同。在上面的例子中即为年份变量 year。回归的结果和在 reg中直接加入相应的虚拟变量相同。

生成变量的最后一招是  egen 。  egen 和  gen 都用于生成新变量,但  egen 的特点是它更强大的函数功能。  gen 可以支持一些函数,  egen 支持额外的函数,如最小值、最大值、均值、标准差、峰度、偏度、中位数等。如果用  gen 搞不定,就得用  egen 想办法了。 操作不同数据表的命令 前面说的都是对单个数据库的简单操作,但有时我们需要改变数据的结构,或者抽取来自不同数据库的信息,因此需要更方便的命令。这一类命令常用的有: 改变数据的纵横结构的命令 reshape生成退化的数据库 collapse合并数据库的命令 append和 merge 纵列(longitudinal)数据通常包括同一个行为者(agent)在不同时期的观察,所以处理这类数据常常需要把数据库从宽表变成长表,或者相反。所谓宽表是以每个行为者为一个观察,不同时期的变量都记录在这个观察下,例如,行为者是厂商,时期有2000、2001年,变量是雇佣人数和所在城市,假设雇佣人数在不同时期不同,所在城市则不变。宽表记录的格式是每个厂商是一个观察,没有时期变量,雇佣人数有两个变量,分别记录2000年和2001年的人数,所在城市只有一个变量。所谓长表是行为者和时期共同定义观察,在上面的例子中,每个厂商有两个观察,有时期变量,雇佣人数和所在城市都只有一个,它们和时期变量共同定义相应时期的变量取值。 在上面的例子下,把宽表变成长表的命令格式如下:

reshape long 雇佣人数的变量名, i(标记厂商的变量名) j(标记时期的变量名)

因为所在城市不随时期变化,所以在转换格式时不用放在 reshapelong后面,转换前后也不改变什么。相反地,如果把长表变成宽表则使用如下命令:

reshape wide 雇佣人数的变量名, i(标记厂商的变量名) j(标记时期的变量名)

collapse的用处是计算某个数据库的一些统计量,再把它存为只含有这些统计量的数据库。用到这个命令的机会不多,我使用它是因为它可以计算中位数和从1到99的百分位数,这些统计量在常规的数据描述命令中没有。如果要计算中位数,其命令的语法如下

collapse (median) (变量名), by(变量名)

生成的新数据库中记录了第一个括号中的变量(可以是多个变量)的中位数。右面的by选项是根据某个变量分组计算中位数,没有这个选项则计算全部样本的中位数。

合并数据库有两种方式,一种是增加观察,另一种是增加变量。第一种用 append,用在两个数据库的格式一样,但观察不一样,只需用以下命令:

append using 文件名.dta

就可以狗尾续貂了。简单明了,不会有什么错。

另一种就不同了,需要格外小心。如果两个数据库中包含共同的观察,但是变量不同,希望从一个数据库中提取一些变量到另一个数据库中用 merge。下次有机会再详细讲解 merge命令。

c6b2222a-8d12-eb11-8da9-e4434bdf6706.png

经管学苑

由南开大学数量经济研究所所长王群勇教授及其学术团队主办,旨在定期与大家分享计量经济学的相关理论及软件使用技巧,覆盖经济学、管理学、社会学、政治学等学科,为广大学友提供优质学术内容

c8b2222a-8d12-eb11-8da9-e4434bdf6706.png c9b2222a-8d12-eb11-8da9-e4434bdf6706.jpeg c8b2222a-8d12-eb11-8da9-e4434bdf6706.png

扫码关注我们

点亮“在看”👇


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3